﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sinacor.Infra.Tools
{
    public class Right
    {
        private int _codigoDireito = 0;
        private int _codigoTipoDireito;
        private string _descricaoDireito;
        private string _descricaoTipoDireito;
        private string _codigoTipoOperacao;
        private string _textoHash;
        private Function _funcao;

        public int CodigoDireito
        {
            get { return _codigoDireito; }
            set { _codigoDireito = value; }
        }

        public int CodigoTipoDireito
        {
            get { return _codigoTipoDireito; }
            set { _codigoTipoDireito = value; }
        }

        public string DescricaoDireito
        {
            get { return _descricaoDireito; }
            set { _descricaoDireito = value; }
        }

        public string DescricaoTipoDireito
        {
            get { return _descricaoTipoDireito; }
            set { _descricaoTipoDireito = value; }
        }

        public string CodigoTipoOperacao
        {
            get { return _codigoTipoOperacao; }
            set { _codigoTipoOperacao = value; }
        }

        public string TextoHash
        {
            get { return _textoHash; }
            set { _textoHash = value; }
        }

        public Function Funcao
        {
            get { return _funcao; }
            set { _funcao = value; }
        }

        public string SiglaModulos
        {
            get
            {
                List<Module> modules = new DataAccess().LoadModules(this._codigoDireito);

                string module = string.Empty;

                if (modules.Count > 0)
                    module = (from m in modules select m.Sigla).ToList().Aggregate((first, second) => first + "," + second);

                return module;
            }
        }

        public Right()
        {
        }

        public Right(int codigoDireito)
        {
            this.CodigoDireito = codigoDireito;
        }

        public Right(int codigoDireito,
                     string descricaoDireito,
                     int codigoTipoDireito,
                     string descricaoTipoDireito,
                     string tipoOperacao,
                     Function funcao)
        {
            this.CodigoDireito = codigoDireito;
            this.DescricaoDireito = descricaoDireito;
            this.CodigoTipoDireito = codigoTipoDireito;
            this.DescricaoTipoDireito = descricaoTipoDireito;
            this.CodigoTipoOperacao = tipoOperacao;
            this.Funcao = funcao;
        }

    }
}
